נתון רכיב שהפלט שלו הוא 0 או 1 ובונה מהפלט מספר על ידי שהוא עובר בלולאה אינסופית ומוסיף את ה- 0 או 1 לביט הנמוך ביותר של המספר (לדוג' בתחילה יצא 1 אחכ 0 אחכ 0 אז המספר שנוצר הוא 100) וכן הלאה הלולאה תמשיך לרוץ,איך נבדוק שהמספר הוא זוגי?
תשובות
הוסף תשובה
|
לצפיה בתשובות
ספטמבר 2022
נעשה את הפעולה & עם tmp=1 ונשווה את התוצאה אם הערך של tmp התאפס-זוגי, אחרת אי זוגי.(% לא טוב כאן כי הערכים יכולים להיות ממש גדולים כי ציינו שהרכיב עובר בלולאה אינסופית).
דצמבר 2022
בודקים את הביט הנמוך ביות בכל שלב, אם הוא 0 - המספר זוגי, אם הוא 1 - המספר המתקבל הוא אי זוגי
נתונים 2 מעבדים של 32 ביט CPU1, CPU2. נתון זכרון משותף SRAM בגודל 412 בתים.
שאלת חימום: נדרש להעביר הודעה אחת ממעבד 1 למעבד 2
שאלת המשך: לייעל את מנגנון שליחת ההודעות ממעבד 1 למעבד 2
הכוונה: רוצים לקרוא את ההודעות לפי הסדר שבו הן נשלחו
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2021
פתרון חלקי
מאחר והמעבד הוא 32 ביט, כל מעבד כותב לזכרון 4 בתים בכל כתיבה, מה שאומר שהכיוון הוא ניהול 4 הודעות (400 בתים) בעזרת 3 מקומות לכתיבה (12/4=3).
נגדיר שאזור 0-399 הוא האזור של ההודעות
אזורים 400-403, 404-407, 408-411 הם פלאגים לשמירת מידע לניהול
לאחר שמעבד 1 כותב הודעה לזכרון, הוא מעדכן את 400-403 בכתובת הבאה שהוא הולך לכתוב אליה.
לאחר שמעבד 2 קורא הודעה מהזכרון, הוא מעדכן את 404-407 בכתובת הבאה שממנה הוא קורא את המידע
במידה וכתובת הקריאה שווה שלכתובת הכתיבה, התור מלא ואין אפשרות לכתוב.
ראיון קצת מלחיץ, היו שני אנשים - ראש צוות ועוד מישהו
שאלות מתוך הראיון
1. יש 2 תהליכים: אחד קורא מזיכרון משותף, אחד כותב לאותו זיכרון. בזיכרוץן הזה יש מקום רק והודעה אח. צריך לכתוב קוד
2. אותם תנאים, אבל עכשיו יש מקום לכמה הודעות באותו גודל.
3. המשך שאלה הקודמת, א ךעכשיו הודעות הם בגדלים שונות.
4. המשך שאלה הקודמת, לשפר תשובה בכך שלהוריד "%" מחישוב ציקליות.
תשובות
הוסף תשובה
|
לצפיה בתשובות
ינואר 2020
1. להישתמש בדגל גלובלי יחיד, כך שבסוף פונקציה כתיבה הוא הופך ל 0, ובסוף פונקציה קריה הוא הופך ל 1.
char buff [1]= {0};
int flag = 0;
char read (void){
if (flag==0){
return;
}
return buff[1];
flag = 0;
}
void write (char val)
{
if (1==flag)
return;
buff[1] = val;
flag = 1;
}
2. classic cyclic buffer
3. תחשיבו על מיקרי קצה, סימו לב על תנאים כאשר
write_index > read_index and write_index < read_index
(or pointers it doesn't matter)
4. לא זוכרת תשובה
ראיון מקצועי של שעתיים עם שאלות טכניות, ראיון עם מנהל, ראיון עם משאבי אנוש
שאלות מתוך הראיון
ישאלה 1:
שנם 2 מחשבים: CPU1 ו CPU2. יש להם זיכרון משותף בגודל 114 בתים. CPU1 רוצה להעביר הודעות בגודל 100 בתים ל CPU2. כיצד יעשה זאת?
שאלה 2:
כיצד נייעל עבור זיכרון בגודל של 414 בתים?
תשובות
הוסף תשובה
|
לצפיה בתשובות
אוגוסט 2019
תשובה 1:
הודעה תועבר בבתים 0-99. בבית 100 נשמור ביט יחיד שאומר האם יש מידע חדש לקריאה (is_new_data)
CPU1 כותב את ההודעה לזיכרון רק אם IS_NEW_DATA כבוי ובסוף מדליק אותו (אחרת מחכה)
CPU2 קורא את ההודעה מהזיכרון רק אם IS_NEW_DATA דולק ובסוף מכבה אותו (אחרת מחכה)
תשובה 2:
נוכל לשלוח עד 4 הודעות במקביל. יהיו 4 ביטים שמייצגים לאיזה חלק בזיכרון כותבים.
CPU1 יכתוב רק אם אחד מהביטים כבוי (יש מקופ פנוי לכתוב)
CPU2 יקרא רק אם אחד מהביטים דולק (יש משהו כתוב בזיכרון)
ראיון ראשון עם ראש צוות, ראיון שני עם ראש קבוצה, ראיון שלישי עם HR
שאלות מתוך הראיון
משה רוצה להעביר לחברו דוד חבילה סודית בעזרת שליח.
משה לא רוצה שהשליח יפתח את החבילה.
למשה מנעול א' ומפתח שפותח אותו, לדוד מנעול ב' ומפתח שפותח אותו.
איך משה יעביר לדוד את החבילה בלי שהשליח יפתח אותה ויגלה את הסוד?
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2019
משה ינעל את הארגז (עם החבילה בתוכו כמובן) עם המנעול שלו, וישלח את הארגז לדוד.
דוד יוסיף וינעל גם עם המנעול שלו, וישלח בחזרה למשה.
משה יקבל את הארגז, יסיר את המנעול שלו וישלח בחזרה לדוד (כשרק המנעול של דוד נועל את הארגז).
רק לדוד יש את המפתח למנעול שלו, ולכן יוכל לפתוח את המנעול שלו ולקבל את החבילה.
הרעיון הוא שבגלל שהמפתחות מעולם לא "טיילו" בין השולח/מקבל, מובטח שאף אחד לא יוכל לפתוח את הארגזים בדרכם.